import { CompositeNode } from "./CompositeNode";
import { ADecorater } from "./DecorateNode";
 
import { ATaskNode } from "./TaskNode";

export enum BT_Oper
{
    Invalid=0,
    And=1,
    Or=2,
    Not=3,
    Test=4,
}

export interface IBTDecoratorLogic
{
    Operation:BT_Oper;
    Number:number;
};
export interface  IOperationStackInfo
{
    NumLeft:number;
	Op:BT_Oper;
    bForcedResult:boolean;
    bHasForcedResult:boolean;
};
export interface IBTCompositeChild<T extends IGameEntity>
{
	ConpositeChild?:CompositeNode<T>;
    TaskChild?:ATaskNode<T>;
	/** execution decorators */
    Decorators:ADecorater<T>[];
	/** logic operations for decorators */
    DecoratorOps:IBTDecoratorLogic[];
}